package 算法练习;

import java.util.Calendar;
import java.util.Scanner;

/** 

* @author ：soulstones
* @version ：2019年8月14日 下午2:05:18 
* @Description：
* 假设有这样一个计算器，该计算器只有两个按钮，按下第一个按钮能使显示数值减少1，按下第二个按钮能使显示数值乘以2，当前显示数值为N, 那么至少要按多少次按钮才能显示数值编程M？

输入：输入两个整数N和M，1≤N，M≤109。 
输出：是显示数值变成M的最少按钮次数。

样例输入： 
4 5 
样例输出： 
3

*/
public class 计算器 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int m = scanner.nextInt();
		int ccout=cal(n,m);
		System.out.println( "result"+ccout);
	}

	private static int cal(int n,int m) {
		if (m+1==n) {
			return 1;
		} else if (m==n) {
			return 0;
		}
		if(n>m) {
			return n-m;
		}
		if(1==m%2) {
			System.out.println(m>>1);
			return cal(n, (m+1)>>1)+2;
		}else {
			return cal(n, m>>1)+1;
		}
	}
}
